//
//  UATStarter.h
//  Pods-UStarter_Example
//
//  Created by Mark on 2021/1/7.
//

#import <Foundation/Foundation.h>
#import "UATNavigator.h"
#import "UATLaunchConfig.h"
#import "UATThirdPartConfig.h"
#import "UATRequestConfig.h"


@protocol UATStarterDelegate <NSObject>

@optional
- (void) onJiguangCustomNotification:( nullable NSNotification* )notification ;

@end


NS_ASSUME_NONNULL_BEGIN

@interface UATStarter : NSObject

@property(nonatomic,strong) UATNavigator * navigator ;
@property(nonatomic,strong) UATLaunchConfig * launchConfig ;
@property(nonatomic,strong) UATThirdPartConfig * thirdPartConfig ;
@property(nonatomic,strong) UIApplication * application ;
@property(nonatomic,strong,nullable) UATRequestConfig * requestConfig ;

@property(nonatomic,assign) id<UATStarterDelegate> delegate ;



#pragma mark - 静态方法

/// 获取单例
+ (instancetype) shareInstance ;


/// 静态方法 初始化
+ (instancetype) setupWithLaunchConfig:(UATLaunchConfig *)launchConfig
                       thirdPartConfig:(nullable UATThirdPartConfig *)thirdPartConfig
                           application:(UIApplication *)application
                             keywindow:(UIWindow*)kw;

/// 设置请求配置
+ (void) setupRequestConfig:(UATRequestConfig*)requestConfig;

/// 获取路由控制器
+ (UATNavigator*) shareRoute ;

/// 注册通知
+ (void) registerDeviceToken:(NSData *)token ;


@end

NS_ASSUME_NONNULL_END
